clear; clc; close all;

% =========== 1. 系统固定参数 ===========
k    = 1.77;
a    = -1;
b    = 0.1;
x0   = 0.5; 
q0   = 0.5;
N    = 1200;     % 总迭代步数
discard = 200;   % 舍弃的前期步数
keep    = 100;   % 每个 u 只保留最后 100 步的数据用于绘制

% 扫描 u 范围
uVals = linspace(-2.5, 1, 501);

% 用于存储 (u, x) 的分岔数据
bifData = [];

% =========== 2. 遍历 u 并迭代系统 ===========
for i = 1:length(uVals)
    u = uVals(i);

    % 调用子函数 iterate_nhmm，得到长为 N 的迭代序列
    [xArr, ~] = iterate_nhmm(u, k, a, b, x0, q0, N);

    % 只取后 keep 步的 x 值
    xSegment = xArr(end-keep+1 : end);

    % 将这些 x 与当前的 u 存入 bifData，用于绘图
    bifData = [bifData; u*ones(keep,1), xSegment(:)];
end

% =========== 3. 绘制分岔图 ===========
plot(bifData(:,1), bifData(:,2), '.','MarkerSize',2);
xlabel('u');
ylabel('x');
title('分岔图');
grid on; box on;

% 如果想和论文中纵轴大范围一致，可自行设置：
% ylim([-80, 80]);  % 论文图中大约 [-80,80]

